919101 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

冷静とオタクのあいだ

冷静とオタクのあいだ

リスト:LASER Ver1.0

プチコン プログラムリスト

タイトル:LASER Ver1.0
レーザーを撃つことを目的としたものです。

Yボタンでレーザー撃てます。
Bボタンでオプション追加。
Aボタンでオプションが減ります。
Xボタンで終了するようになっていますが、画面初期化されないので意味はありません。
もちろん十字キー(スライドパッド)で移動できます。
レーザーはYボタンから手を放すと止まります。
行き当たりばったりなプログラムなうえに、まったく最適化しておりません。
ものすごくFORループな感じです。
レーザーはグラフィック画面に描いています。
そのおかげで、たくさん横に並んでもスプライトのように消えたりしません。
遅くなりますが...
DSC02871.jpg

動画
http://www.nicovideo.jp/watch/sm17220924
(訳あってニコニコ動画です。見れない人ごめんなさい)

http://www43.tok2.com/home/ogut/index.html
リスト作成に上記サイトの「PTC2HTML」を利用させていただいています。

001. ′Ver 1.0
002. CLEAR
003. VISIBLE 1,1,0,0,1,1
004. CLS:COLOR 0
005. 
006. OPMAX=20  ′オフ゜ションノカス゛
007. 
008. ′LASERステ-タス
009. DIM LST(OPMAX+1,4)
010. FOR I=0 TO OPMAX
011.   LST(I,0)=0  ′フラク゛
012.   LST(I,1)=0  ′ナカ゛サ
013.   LST(I,2)=0  ′カイシX
014.   LST(I,3)=0  ′カイシY
015. NEXT I
016. 
017. ′スフ゜ライトシ゛ュンヒ゛
018. ′0:シ゛キ
019. DIM SPK(100),SPP(100),SPH(100),SPV(100),SPI(100)
020. DIM SPF(100),SPX(100),SPY(100)
021. FOR I=0 TO 99
022.   SPF(I)=0  ′0:スキッフ゜ 1:シンキ 2:イト゛ウ 3:ヘンコウ 4:シュウキョ
023. NEXT I
024. ′シ゛キセッテイ
025. SPK(0)=256
026. SPP(0)=2
027. SPH(0)=0
028. SPV(0)=0
029. SPI(0)=0
030. SPF(0)=1
031. SPX(0)=100
032. SPY(0)=100
033. SPK(1)=257
034. SPP(1)=2
035. SPH(1)=0
036. SPV(1)=0
037. SPI(1)=0
038. SPF(1)=1
039. SPX(1)=116
040. SPY(1)=100
041. 
042. SPCNT=1  ′スフ゜ライトノシヨウスウ
043. 
044. ′オフ゜ション
045. OPW=8    ′オフ゜ションノウエイト
046. DIM OP(OPW*OPMAX,2)  ′オフ゜ショヨウエイトテ-フ゛ル X,Y
047. OPC=0    ′ヒョウシ゛チュウノオフ゜ションスウ
048. FOR I=1 TO OPMAX
049.  SPK(I*2)=200
050.  SPP(I*2)=5
051.  SPH(I*2)=0
052.  SPV(I*2)=0
053.  SPI(I*2)=0
054.  SPF(I*2)=0
055.  SPX(I*2)=0
056.  SPY(I*2)=0
057. NEXT I
058. SPCNT=SPCNT+OPMAX*2
059. 
060. GOSUB @SPWRITE
061. AB=FALSR  ′Aホ゛タンカ゛ハナサレタカチェック
062. BB=FALSE  ′Aホ゛タンカ゛ハナサレタカチェック
063. 
064. @MLOOP
065. ′ニュウリョク
066. XX=0:YY=0
067. BTN=BUTTON()
068. IF BTN AND  64 GOTO @EXIT ′Xホ゛タン
069. IF BTN AND 128 THEN SHOT=1 ′Yホ゛タン
070. IF BTN AND   1 THEN YY=-2 ′ウエ
071. IF BTN AND   2 THEN YY=2  ′シタ
072. IF BTN AND   4 THEN XX=-2 ′ヒタ゛リ
073. IF BTN AND   8 THEN XX=2  ′ミキ゛
074. IF AB GOTO @ABSKIP
075. IF BTN AND  16 THEN OPADD=-1  ′Aホ゛タン
076.  AB=TRUE
077. @ABSKIP
078. IF BB GOTO @BBSKIP
079. IF BTN AND  32 THEN OPADD=1   ′Bホ゛タン
080.  BB=TRUE
081. @BBSKIP
082. IF XX!=0 OR YY!=0 THEN GOSUB @MYMOVE
083. 
084. 
085. IF SHOT==0 GOTO @SHOTSKIP
086.  FOR I=0 TO OPC
087.   LST(I,0)=1
088.  NEXT I
089.  GOSUB @LASER
090.  SHOT=0
091. @SHOTSKIP
092. 
093. IF OPADD==0 GOTO @OPSKIP
094.  IF OPADD==-1 GOTO @OPCMI
095.   ′オフ゜ションツイカ
096.   IF OPC==OPMAX GOTO @OPEND
097.    OPC=OPC+1
098.    OPX=SPX((OPC-1)*2)
099.    IF OPC==1 THEN OPX=OPX+4
100.    OPY=SPY((OPC-1)*2)
101.    FOR I=(OPC-1)*OPW TO (OPC*OPW)-1
102.     OP(I,0)=OPX
103.     OP(I,1)=OPY
104.    NEXT I
105.    SPX(OPC*2)=OPX
106.    SPY(OPC*2)=OPY
107.    SPF(OPC*2)=1
108.  GOTO @OPEND
109.  @OPCMI
110.   IF OPC==0 GOTO @OPEND
111.    SPF(OPC*2)=4
112.    OPC=OPC-1
113.  @OPEND
114.  OPADD=0
115. @OPSKIP
116. 
117. GOSUB @SPWRITE
118. 
119. ′ホ゛タンオフチェック
120. IF (BTN AND 16)==FALSE THEN AB=FALSE
121. IF (BTN AND 32)==FALSE THEN BB=FALSE
122. 
123. WAIT 1
124. GOTO @MLOOP
125. 
126. 
127. @EXIT
128. PRINT”シュウリョウ
129. END
130. 
131. @MYMOVE
132. ′シ゛キノイト゛ウ
133. SPX(0)=SPX(0)+XX
134. IF SPX(0)<0 THEN SPX(0)=0
135. IF SPX(0)>223 THEN SPX(0)=223
136. SPY(0)=SPY(0)+YY
137. IF SPY(0)<0 THEN SPY(0)=0
138. IF SPY(0)>175 THEN SPY(0)=175
139. SPF(0)=2
140. SPX(1)=SPX(0)+16
141. SPY(1)=SPY(0)
142. SPF(1)=2
143. ′オフ゜ションイト゛ウ
144. IF OPC==0 GOTO @OPMVSKIP
145.  ′オフ゜ションウエイトテ-フ゛ルヲ1ツスライト゛
146.  OPWORK=OPW*OPC-1
147.  FOR I=0 TO OPWORK-1
148.   OP(OPWORK-I,0)=OP(OPWORK-I-1,0)
149.   OP(OPWORK-I,1)=OP(OPWORK-I-1,1)
150.  NEXT I
151.  OP(0,0)=SPX(0)+4
152.  OP(0,1)=SPY(0)
153.  ′オフ゜ツョンスフ゜ライトニハンエイ
154.  FOR I=1 TO OPC
155.   IF SPF(I*2)!=0 GOTO @OPHSKIP
156.    SPX(I*2)=OP(I*OPW-1,0)
157.    SPY(I*2)=OP(I*OPW-1,1)
158.    SPF(I*2)=2
159.   @OPHSKIP
160.  NEXT I
161. @OPMVSKIP
162. ′GOSUB @SPWRITE
163. RETURN
164. 
165. ′---スフ゜ライトカキカエ
166. @SPWRITE
167. FOR J=0 TO SPCNT
168.  SN=J
169.  ON SPF(J) GOSUB @SKIP,@SPNEW,@SPMOVE,@SPCHANG,@SPDEL
170. NEXT J
171. RETURN
172. 
173. @SKIP  ′ナニモシナイ
174. RETURN
175. 
176. @SPNEW
177. ′′PRINT ”NEW SN= ”;SN
178. SPSET SN,SPK(SN),SPP(SN),SPH(SN),SPV(SN),SPI(SN)
179. SPF(SN)=0
180. GOSUB @SPMOVE
181. RETURN
182. 
183. @SPMOVE
184. ′′PRINT ”MOVE OPC= ”;OPC
185. SPOFS SN,SPX(SN),SPY(SN)
186. SPF(SN)=0
187. RETURN
188. 
189. @SPCHANG
190. SPF(SN)=0
191. RETURN
192. 
193. @SPDEL
194. SPCLR SN
195. SPF(SN)=0
196. RETURN
197. 
198. @LASER
199. FOR K=0 TO OPC
200.  IF LST(K,0)==0 GOTO @LANEXT
201.   ′フルイレ-サ゛-ヲケス
202.   IF LST(K,1)==0 GOTO @LASK01
203.    LEND=LST(K,2)+LST(K,1)
204.    IF LEND>255 THEN LEND=255
205.    GLINE LST(K,2),LST(K,3),LEND,LST(K,3),0
206.   @LASK01
207.   ′アタラシイレ-サ゛-
208.   ′ナカ゛サカ゛220ヲコケタフ゛ンハ スキマニナル
209.   LST(K,1)=LST(K,1)+15
210.   LST(K,2)=SPX(2*K)+28  ′(32-4)
211.   IF K!=0 THEN LST(K,2)=LST(K,2)-4
212.   LST(K,3)=SPY(2*K)+8
213.   IF LST(K,1)>220 THEN LST(K,2)=LST(K,2)+(LST(K,1)-220)
214. 
215.   IF LST(K,2)>255 THEN LST(K,0)=0  ′カ゛メンカ゛イニテ゛タ
216.   IF LST(K,0)==0 THEN LST(K,1)=0
217.   IF LST(K,0)==0 GOTO @LANEXT
218. 
219.   LEND=LST(K,2)+LST(K,1)
220.   IF LEND>255 THEN LEND=255
221.   GLINE LST(K,2),LST(K,3),LEND,LST(K,3),6
222.  @LANEXT
223. NEXT K
224. 
225. RETURN
226. 

LASER10_1.jpg LASER10_2.jpg LASER10_3.jpg


© Rakuten Group, Inc.